package org.me.service.impl;

import java.io.Serializable;
import java.util.List;
import org.me.data.GenericDaoHibernate;
import org.me.entityBeans.TDepartamentos;
import org.me.service.DepartamentoServiceHibernate;

public class DepartamentoServiceHibernateImpl implements DepartamentoServiceHibernate{
    
    private GenericDaoHibernate genericDaoHibernateImpl;

    public GenericDaoHibernate getGenericDaoHibernateImpl() {
        return genericDaoHibernateImpl;
    }

    public void setGenericDaoHibernateImpl(GenericDaoHibernate genericDaoHibernateImpl) {
        this.genericDaoHibernateImpl = genericDaoHibernateImpl;
    }  
   
    //Graba o actualiza un Dpto x su Id, es de tipo TRANSACTIONAL -> definido en la interfaz
    @Override
    public void saveOrUpdateDepartamento(TDepartamentos departamento) {
        this.getGenericDaoHibernateImpl().saveOrUpdate(departamento);
    }
    
    //Borra un Dpto x su Id
    @Override
    public String deleteDepartamento(TDepartamentos departamento) {
        return this.getGenericDaoHibernateImpl().delete(departamento);
    }
    
    //Trae todos los Departamentos ordenados x Id   
    @Override
    public List<TDepartamentos> findAllDepartamentos() {
        return this.getGenericDaoHibernateImpl().findByOnlyNamedQuery( "TDepartamentos.findAll");
    }    
    
    //Trae el Departamento que coincida con el nombre
    @Override
    public List<TDepartamentos> findByNameDepartamento(String nomDepartamento) {          
        return this.getGenericDaoHibernateImpl().findByCriterio( "TDepartamentos.findByVNombreDepartamento", "vNombreDepartamento", nomDepartamento );
    }  
    
    //Trae el Departamento que coincida con el id 
    @Override
    public TDepartamentos findByIdDepartamento(Serializable id) {        
        return  this.getGenericDaoHibernateImpl().findById(TDepartamentos.class, id);
    }
    
    //Trae el Dpto con sus Provincias asociados que coincida con el idDpto
    @Override
    public List<TDepartamentos> findDptosConProvincias(Short idDpto)
    {
        return this.getGenericDaoHibernateImpl().findByCriterio( "TDepartamentos.findDptosConProvincias", "nIdDepartamentoPk", idDpto );
    }
    
}
